package edu.pe.cayetano.model.bo;

import org.apache.commons.beanutils.DynaBean;

import ws.synopsis.frmwrk.common.BResult;
import edu.pe.cayetano.dao.DiagnosticoDefinitivoDAO;
import edu.pe.cayetano.dao.HistoriaClinicaDetalleDAO;
import edu.pe.cayetano.dao.OperacionesComunesDAO;
import edu.pe.cayetano.dao.OrdenServicioDAO;
import edu.pe.cayetano.dao.PacienteDAO;
import edu.pe.cayetano.framework.BusinessException;
import edu.pe.cayetano.seccd.constantes.ConstantesSECCD;
import edu.pe.cayetano.util.Utilitario;

public class DiagnosticoDefinitivoBO extends BaseBO{
	
	public BResult buscarDiagnosticoDefinitivoEspecifico(DynaBean dyna) throws BusinessException{
		BResult 					retSalida		= null;
		try{
			conectar();
			DiagnosticoDefinitivoDAO diagnosticoDAO	 	= new DiagnosticoDefinitivoDAO(conn);
			retSalida 		= diagnosticoDAO.buscarDiagnosticoDefinitivo(Utilitario.getPropertyDynaBean(dyna, "codigo"));
		}catch(Exception e){
			retSalida = new BResult();
			retSalida.setCode(-1);
			retSalida.setMessage("[DiagnosticoDefinitivoBO] error en metodo buscarDiagnosticoDefinitivoEspecifico generado por:"+e.getMessage());
		}finally{
			try{
				desconectar();
			}catch(Exception e){
				retSalida = new BResult();
				retSalida.setCode(-1);
				retSalida.setMessage("[DiagnosticoDefinitivoBO] error en metodo buscarDiagnosticoDefinitivoEspecifico generador po:"+e.getMessage());
			}
		}
		return retSalida;
	}

	public BResult buscarDiagnosticoDefinitivoEspecifico(String codigo) throws BusinessException{
		BResult 					retSalida		= null;
		try{ 
			conectar();
			DiagnosticoDefinitivoDAO diagnosticoDAO	 	= new DiagnosticoDefinitivoDAO(conn);
			retSalida 		= diagnosticoDAO.buscarDiagnosticoDefinitivo(codigo);
		}catch(Exception e){
			retSalida = new BResult();
			retSalida.setCode(-1);
			retSalida.setMessage("[DiagnosticoDefinitivoBO] error en metodo buscarDiagnosticoDefinitivoEspecifico generado por:"+e.getMessage());
		}finally{
			try{
				desconectar();
			}catch(Exception e){
				retSalida = new BResult();
				retSalida.setCode(-1);
				retSalida.setMessage("[DiagnosticoDefinitivoBO] error en metodo buscarDiagnosticoDefinitivoEspecifico generador po:"+e.getMessage());
			}
		}
		return retSalida;
	}
	
	public BResult insertaDiagnosticoDefinivitoArchivoHC(DynaBean dyna) throws BusinessException{
		BResult 				retSalida				= null;
		try{
			conectar();
			DiagnosticoDefinitivoDAO diagnosticoDAO	 	= new DiagnosticoDefinitivoDAO(conn);
			retSalida 	= diagnosticoDAO.insertaDiagnosticoDefinivitoArchivoHC(dyna);
			if(retSalida.getCode()==0){
				HistoriaClinicaDetalleDAO historiaDAO	 	= new HistoriaClinicaDetalleDAO(conn);
				retSalida 	= historiaDAO.actualizaExisteHistoriaDetalle(dyna,ConstantesSECCD.EXISTE_DIADEF);
			}
			grabar();
		}catch(Exception e){
			try {
				deshacer();
			} catch (Exception e2) {
				throw new BusinessException(e.getMessage(), e2);
			}
			retSalida = new BResult();
			retSalida.setCode(-1);
			retSalida.setMessage("[DiagnosticoDefinitivoBO] error en metodo insertaDiagnosticoDefinivitoArchivoHC generado por:"+e.getMessage());
		}finally{
			try{
				desconectar();
			}catch(Exception e){
				retSalida = new BResult();
				retSalida.setCode(-1);
				retSalida.setMessage("[DiagnosticoDefinitivoBO] error en metodo insertaDiagnosticoDefinivitoArchivoHC generador po:"+e.getMessage());
			}
		}
		return retSalida;
	}
	
	public BResult editaDiagnosticoDefinivitoArchivoHC(DynaBean dyna) throws BusinessException{
		BResult 				retSalida				= null;
		try{
			conectar();
			DiagnosticoDefinitivoDAO diagnosticoDAO	 	= new DiagnosticoDefinitivoDAO(conn);
			retSalida 	= diagnosticoDAO.editaDiagnosticoDefinivitoArchivoHC(dyna);
			grabar();
		}catch(Exception e){
			try {
				deshacer();
			} catch (Exception e2) {
				throw new BusinessException(e.getMessage(), e2);
			}
			retSalida = new BResult();
			retSalida.setCode(-1);
			retSalida.setMessage("[DiagnosticoDefinitivoBO] error en metodo editaDiagnosticoDefinivitoArchivoHC generado por:"+e.getMessage());
		}finally{
			try{
				desconectar();
			}catch(Exception e){
				retSalida = new BResult();
				retSalida.setCode(-1);
				retSalida.setMessage("[DiagnosticoDefinitivoBO] error en metodo editaDiagnosticoDefinivitoArchivoHC generador po:"+e.getMessage());
			}
		}
		return retSalida;
	}

	public BResult editaDiagnosticoDefinivitoArchivoHCxMedico(DynaBean dyna) throws BusinessException{
		BResult 				retSalida				= null;
		try{
			conectar();
			DiagnosticoDefinitivoDAO diagnosticoDAO	 	= new DiagnosticoDefinitivoDAO(conn);
			retSalida 	= diagnosticoDAO.editaDiagnosticoDefinivitoArchivoHCxMedico(dyna);
			grabar();
		}catch(Exception e){
			try {
				deshacer();
			} catch (Exception e2) {
				throw new BusinessException(e.getMessage(), e2);
			}
			retSalida = new BResult();
			retSalida.setCode(-1);
			retSalida.setMessage("[DiagnosticoDefinitivoBO] error en metodo editaDiagnosticoDefinivitoArchivoHCxMedico generado por:"+e.getMessage());
		}finally{
			try{
				desconectar();
			}catch(Exception e){
				retSalida = new BResult();
				retSalida.setCode(-1);
				retSalida.setMessage("[DiagnosticoDefinitivoBO] error en metodo editaDiagnosticoDefinivitoArchivoHCxMedico generador po:"+e.getMessage());
			}
		}
		return retSalida;
	}
	
	public BResult buscarArchivoxDiagnostico(DynaBean dyna) throws BusinessException{
		BResult 						retSalida		= null;
		DiagnosticoDefinitivoDAO		diagnosticoDAO		= null;
		try{
			conectar();
			diagnosticoDAO	 	= new DiagnosticoDefinitivoDAO(conn);
			retSalida 		= diagnosticoDAO.buscarArchivoxDiagnostico(Utilitario.getPropertyDynaBean(dyna,"txtFileHC"));
		}catch(Exception e){
			retSalida = new BResult();
			retSalida.setCode(-1);
			retSalida.setMessage("[DiagnosticoDefinitivoBO] error en metodo buscarArchivoxDiagnostico generado por:"+e.getMessage());
		}finally{
			try{
				desconectar();
			}catch(Exception e){
				retSalida = new BResult();
				retSalida.setCode(-1);
				retSalida.setMessage("[DiagnosticoDefinitivoBO] error en metodo buscarArchivoxDiagnostico generador po:"+e.getMessage());
			}
		}
		return retSalida;
	}
}
